package com.dqyy.order.config;

import com.dqyy.order.task.DatabaseBackupTask;
import org.quartz.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * Quartz定时任务配置类
 * 用于配置数据库备份任务的调度规则
 */
@Configuration
public class JobConfig {

    /**
     * 创建数据库备份任务的JobDetail
     * JobDetail是Quartz中的一个概念，用于定义任务的具体内容
     * 
     * @return JobDetail对象，包含任务的具体实现类
     */
    @Bean
    public JobDetail databaseBackupJobDetail() {
        return JobBuilder.newJob(DatabaseBackupTask.class)
                .withIdentity("databaseBackupJob")  // 设置任务标识
                .storeDurably()                     // 设置任务持久化
                .build();
    }

    /**
     * 创建数据库备份任务的触发器
     * Trigger是Quartz中的一个概念，用于定义任务的执行时间
     * 
     * @return Trigger对象，定义了任务的执行时间规则
     */
    @Bean
    public Trigger databaseBackupTrigger() {
        // 创建Cron表达式调度器
        // 格式说明：
        // 秒 分 时 日 月 周 年
        // 0 0 2 * * ? 表示每天凌晨2点执行
        CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule("0 0 2 * * ?");
        
        return TriggerBuilder.newTrigger()
                .forJob(databaseBackupJobDetail())  // 关联到具体的JobDetail
                .withIdentity("databaseBackupTrigger")  // 设置触发器标识
                .withSchedule(scheduleBuilder)      // 设置调度规则
                .build();
    }
} 